/**
 * @Author: Chen Chen
 * @Date: 2020-04-23 10:04:31
 * @description: 用于 element ui 级联菜单的通用工具类
 */

/**
 * @Author: Chen Chen
 * @Date: 2020-04-23 10:07:48
 * @description:  用于根据后台获取的id来 回显到当前页面的级联菜单中（设置默认选中）
 */
export function selectCascader (selectArray, allNodeArray, id) {
  const node = allNodeArray.find(node => node.value === id)
  if (node) {
    selectArray.push(id)
  } else {
    allNodeArray.forEach(_node => {
      if (_node.children) {
        selectArray = selectCascader(selectArray, _node.children, id)
        // 递归插入上级组织  如果子节点没有在数组  父节点也不能加入进去咯
        if (_node.children.find(childrenNode => childrenNode.value === selectArray[0])) {
          selectArray.splice(0, 0, _node.value)
        }
      }
    })
  }
  // console.log(selectArray)
  return selectArray
}

/**
 * @Author: Chen Chen
 * @Date: 2020-07-03 09:16:12
 * @description: 获取treeNode 对象的  code 数组
 * @param {type}
 * @return:
 */
export function getCascaderLabel (allNodeArray, id) {
  let selectArray = []
  const node = allNodeArray.find(node => node.id === id)
  if (node) {
    selectArray.push(node.code)
  } else {
    allNodeArray.forEach(_node => {
      if (_node.children) {
        selectArray = getCascaderLabel(_node.children, id)
        // 递归插入上级组织  如果子节点没有在数组  父节点也不能加入进去咯
        if (_node.children.find(childrenNode => childrenNode.code === selectArray[0])) {
          selectArray.splice(0, 0, _node.code)
        }
      }
    })
  }
  // console.log(selectArray)
  return selectArray
}

/**
 * @Author: Chen Chen
 * @Date: 2020-04-26 16:35:55
 * @description:
 * @param {array,array,String} 空数组, 组织架构级联数组, 目标匹配值
 * @return: 返回级联菜单选中的
 */
export function selectCascaderByLabel (selectArray, allNodeArray, id) {
  const node = allNodeArray.find(node => node.label === id)
  if (node) {
    selectArray.push(node.value)
  } else {
    allNodeArray.forEach(_node => {
      if (_node.children) {
        selectArray = selectCascaderByLabel(selectArray, _node.children, id)
        selectArray.splice(0, 0, _node.value)// 递归插入上级组织
      }
    })
  }
  return selectArray
}

/**
 * @Author: Chen Chen
 * @Date: 2020-07-02 14:45:38
 * @description: 根据 code 来返回选中的数组
 * @param {type}
 * @return:
 */
export function selectCascaderByCode (allNodeArray, codeArray) {
  const selectArray = []
  // 获取 顶级 node, 然后从这个node 向下寻找
  var Organ = allNodeArray.find(node => node.code === codeArray[0])
  if (Organ) {
    selectArray.push(Organ.id)
    let temp = Organ
    for (let i = 1; i < codeArray.length; i++) {
      temp = temp.children.find(node => node.code === codeArray[i])
      if (temp) {
        selectArray.push(temp.id)
      }
    }
  }
  return selectArray
}
